package editorsvg.propiedades;

import editorsvg.editor.comandos.GestorComandos;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Jorge Berjano
 */
public class DefinicionPropiedades {
    private ArrayList<GrupoPropiedades> listaGrupos = new ArrayList<GrupoPropiedades>();
    private GrupoPropiedades propiedadesNoIdentificadas;
    
    public DefinicionPropiedades() {        
    }
    
    public void agregar(GrupoPropiedades grupo) {
        if (grupo != null) {
            listaGrupos.add(grupo);
        }
    }

    public List<GrupoPropiedades> getGrupos() {
        return listaGrupos;
    }
    
    /**
     * Obrtiene una propiedad con un determinado alias.
     * Si no existe se crea y se mete en el grupo de propiedades no identificadas
     * @param alias
     * @return
     */
    public Propiedad obtenerPropiedadAlias(String alias) {
        for (GrupoPropiedades grupo : listaGrupos) {
            Propiedad propiedad = grupo.obtenerPropiedadAlias(alias);
            if (propiedad != null) {
                return propiedad;
            }
        }
        
        if (propiedadesNoIdentificadas == null) {
            propiedadesNoIdentificadas = new GrupoPropiedades("Otras");
            listaGrupos.add(propiedadesNoIdentificadas);
        }
        PropiedadTextoMultilinea propiedad = new PropiedadTextoMultilinea(null, alias, alias);
        propiedadesNoIdentificadas.agregarPropiedad(propiedad);        
        return propiedad;
    }

    public void setGestorComandos(GestorComandos gestorComandos) {
        for (GrupoPropiedades grupo : listaGrupos) {
            grupo.setGestorComandos(gestorComandos);
        }
    }
    
    public void asignarObjeto(Object objeto) {
        for (GrupoPropiedades grupo : listaGrupos) {
            grupo.asignarObjeto(objeto);
        }
    }
}  
